1. Field of the Invention
The present invention relates generally to communication networks. More particularly, the present invention relates to a system and method for providing flow control in communication networks.
2. Description of the Related Art
Local Area Networks (LANs) have been very popular for many years. One particularly type of LAN is known as Ethernet. Since Ethernet's beginnings in the early 1970's, computer networking companies and engineering professionals have continually worked to improve Ethernet product versatility, reliability and transmission speeds. To ensure that new Ethernet products were compatible and reliable, the Institute of Electrical and Electronic Engineers (IEEE) formed a working group to define and promote industry LAN standards. Today, the IEEE has various Ethernet working groups that are responsible for standardizing the development of new Ethernet protocols and products under an internationally well known LAN standard called the "IEEE 802.3 standard."
Currently, there are a wide variety of standard compliant Ethernet products used for receiving, processing and transmitting data over Ethernet networks. By way of example, these networking products are typically integrated into networked computers, network interface cards (NICs), routers, switching hubs, bridges and repeaters. Until recently, common data transmission speeds over Ethernet networks were between 1 and 10 mega bits per second (Mbps). However, to meet demands for faster data transmission speeds, the IEEE 802.3 standards committee officially introduced the "IEEE 802.3u standard" in May of 1995. This standard is also referred to as the "100BASE-T" (Fast Ethernet) standard because of its ability to perform data transmissions up to about 100 Mbps. Ethernet networks capable of speeds approaching 1 giga bits per second (Gbps) are currently in development.
FIG. 1 is a diagrammatic representation of an open systems interconnection (OSI) layered model 10 developed by the International Organization for Standards (ISO). The OSI layered model 10 describes the exchange of information between various layers of a network. The OSI layered model 10 is particularly useful for separating the technological functions of each layer, and thereby facilitating the modification or update of a given layer without detrimentally impacting the operation of neighboring layers.
At a lower most layer, the OSI model 10 has a physical layer 12 that is responsible for encoding and decoding data into signals that are transmitted across a particular medium. Above the physical layer 12, a data link layer 14 is defined for providing reliable transmission of data over a network while performing appropriate interfacing with physical layer 12 and a network layer 16. As shown in FIG. 1, the data link layer 14 generally includes a logical link layer (LLC) 14a and a media access control (MAC) layer 14b. The LLC layer 14a is generally a software function that is responsible for attaching control information to the data being transmitted from a network layer 16 to the MAC layer 14b. The MAC layer 14b is responsible for scheduling, transmitting and receiving data over a link. Thus, the MAC layer 14b is primarily responsible for controlling the flow of data over a network, ensuring that transmission errors are detected, and ensuring that transmissions are appropriately synchronized. As is well known in the art, the MAC layer 14b generally schedules and controls the access of data to the physical layer 12 using a well known carrier sense multiple access with collision detection (CSMA/CD) algorithm for half duplex mode of operation.
The network layer 16 is provided above the data link layer 14 and is responsible for routing data between nodes in a network, and for initiating, maintaining and terminating a communication link between users connected to the nodes. A transport layer 18 is responsible for performing data transfers within a particular level of service quality. By way of example, a typical software protocol used for performing the transport layer 18 functions may be TCP/IP, Novell IPX and NetBeui. A session layer 20 is provided above the transport layer 18. The session layer 20 is generally concerned with controlling when users are able to transmit and receive data based on whether users are capable of full-duplex or half-duplex transmission. Above the session layer 20 is a presentation layer 22 and then above that is an application layer 24. The presentation layer 22 is responsible for translating, converting, compressing and decompressing data being transmitted across a medium. As an example, the presentation layer 22 functions are typically performed by computer operating systems such as UNIX, DOS, Microsoft Windows, Windows NT and Macintosh OS. Finally, the application layer 24 provides users with suitable interfaces for accessing and connecting to a network.
FIGS. 2A-2C are block diagrams of interconnected points (stations) in a network. A point may be a network in itself, a single computer system, or any intermediate point in a network such as a router, switching hub, bridge or repeater. FIG. 2A illustrates a configuration in which two points, point A 50 and point B 52, communicate with each other in a bidirectional manner. FIG. 2B illustrates a configuration where a multipoint switching hub 54 facilitates communication between points 56a-56c. FIG. 2C illustrates a configuration where two multipoint switching hubs 54a and 54b are coupled together and facilitate communication between points 56d-56i.
Each point shown in FIGS. 2A-2C processes incoming and outgoing data independently from every other point. The various points provide full duplex communications. In order to accommodate the different transmit and receive data processing speeds at the various points, buffers are typically used to temporarily store data to be processed. The data being stored represents either data to be transmitted or data that has been received and is awaiting processing. Accordingly, if point 50 of FIG. 2A transmits at a speed faster than point 52 can process received data, then point 52 may utilize a receive buffer (not shown) to store data which has been received by point 52 but not yet processed. In such a case, a problem may arise if enough data has been transmitted from point 50 to the receive buffer at point 52 such that the receive buffer becomes full. When the receive buffer becomes full, there is no conventional way to rapidly notify point 50 that the receive buffer of point 52 is full. If point 50 continues to transmit data faster than the speed at which point 52 is processing the received data, data packets transmitted by point 50 will be lost. The loss of data packets substantially degrades the performance of the network, and in particular transmissions between points 50 and 52.
Recently, to provide for flow control for transmissions and thus alleviate the loss of frames (or packets) when a receive buffer is full, a technique for sending a pause frame was added to the 802.3 IEEE standard for full duplex links. The technique is described in IEEE 802.3x standard. According to the IEEE 802.3x standard, devices desiring to stop the flow of incoming frames from a transmitting device can send that transmitting device a pause frame. The pause frame contains a pause time. Pause frames are treated as special types of control frames. Upon receiving the pause frame, the transmitting device is to "pause" its transmissions to the receiving device for the pause time. A MAC control layer 14c is added between the MAC layer 14b and the LLC layer 14a shown in FIG. 3 to produce the pause control operations. The IEEE 802.3x standard does not specify or require any particular implementation of the standard or policies used to send the pause frames. The IEEE 802.3x standard is hereby incorporated by reference.
Conventional implementations of the 802.3x standard have used circuitry located external to a MAC integrated circuit. The external circuitry would monitor a receive buffer and determine when a pause frame needs to be transmitted. When it is determined to transmit a pause frame, the external circuitry would signal the MAC integrated circuit through a dedicated pin to send a pause frame.
The conventional implementations of the 802.3x standard suffer from various problems. One problem is that the responsiveness of the circuitry (device) to a condition where a pause frame is needed is poor. Namely, when the dedicated pin is asserted by the external circuitry to request the transmission of a pause frame, the MAC integrated circuit understands that a pause frame should be transmitted. However, the pause frame is sometimes not able to be immediately transmitted because of congestion due to other frames waiting to be transmitted. Normally, data and control frames share a transmission data path and thus congestion results from both data frames and control frames. Such congestion can be referred to as queuing delays. While devices can have separate data paths for data and control frames, such devices are substantially more costly to design and manufacture. Thus, poor responsiveness in transmitting a pause frame can result due to congestion. Poor responsiveness also results from the inherent time delay associated with the external circuitry's latency in monitoring a receive buffer to determine when a pause frame is needed and then activating the dedicated pin on the MAC integrated circuit. The undesirable consequence of poor responsiveness is that the pause frame arrives at the transmitting device after a significant amount of data has been transmitted. As a result, the receive buffer can easily overflow and degrade performance, particularly at higher speed communications such as 100 Mbps and 1 Gbps.
Thus, there is a need to have a system and method for controlling the flow of data between points in a network environment such that the amount of transmitted data lost is reduced.